package com.xh3140.android.widget.dialog.params;

import android.content.Context;

import androidx.annotation.ColorInt;
import androidx.annotation.IntRange;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.annotation.Px;

import com.xh3140.android.widget.dialog.callback.ConfigViewCallback;
import com.xh3140.android.widget.dialog.values.ColorRes;
import com.xh3140.android.widget.dialog.values.DimenRes;
import com.xh3140.android.widget.dialog.view.ListView;

import java.util.ArrayList;
import java.util.List;

/**
 * 对话框列表主体视图配置属性
 * 每一个属性都有默认的设定值
 * 在创建对话框时这些属性可以自定义修改
 */
public final class ListParams extends AbstractParams {
    /**
     * 按钮位置是否在右边
     */
    public boolean isRight = true;

    /**
     * 列表视图是否是单选列表
     */
    public boolean isSingle = true;

    /**
     * 列表视图是否有分割线
     */
    public boolean hasDivider = false;

    /**
     * 列表视图分割线颜色 argb
     */
    @ColorInt
    public int dividerColor = ColorRes.LIST_DIVIDER_COLOR;

    /**
     * 列表视图分割线厚度 px
     */
    @Px
    public int dividerThickness = dp2px(DimenRes.LIST_DIVIDER_THICKNESS);

    /**
     * 列表视图多选默认的选取位置索引组
     */
    public int checkedIndex = -1;

    /**
     * 列表视图多选默认的选取位置索引组
     */
    public List<Integer> checkedIndexList = new ArrayList<>();

    /**
     * 配置回调
     * 拥有绝对控制权的回调，它在其他属性配置结束后回调
     * 一般情况不要使用它，除非提供的现有配置属性不满足需求
     */
    @Nullable
    public ConfigViewCallback<ListView> callback = null;

    /**
     * 列表视图项目属性列表
     */
    public final List<ItemParams> items = new ArrayList<>();

    public ListParams(@NonNull Context context, @IntRange(from = 0) int itemCount) {
        super(context);
        for (int i = 0; i < itemCount; ++i) {
            items.add(new ItemParams(context));
        }
    }
}